其他
如何高效的扩展定时/计数器?
The following article is from 鱼鹰谈单片机 Author 鱼鹰Osprey
static int16_t last_cnt; // 上一次的脉冲。
static int32_t plus_cnt; // 相对开始位置的脉冲数,
int16_t temp,temp2; // 保持和 CNT 的位宽一致
temp = TIM2->CNT; // ARR 设置为最大值 0xFFFF 即可
temp2 = temp - last_cnt; // 必须分步
plus_cnt += temp2; // 计算相对脉冲数 错误计算 plus_cnt += (temp - last_cnt);
last_cnt = temp; // 保存上一次的值
static uint16_t last_cnt; // 上一次的脉冲。
static uint32_t plus_cnt; // 相对开始位置的脉冲数,
uint16_t temp,temp2; // 保持和 CNT 的位宽一致
temp = TIM2->CNT; // ARR 设置为最大值 0xFFFF 即可
temp2 = temp - last_cnt; // 必须分步
plus_cnt += temp2; // 计算相对脉冲数 错误计算 plus_cnt += (temp - last_cnt);
last_cnt = temp; // 保存上一次的值
历史文章:
2021-06-12
2021-06-20
2021-06-20